package delphorm.entite.questionnaire;

public class FiltreFichier implements Filtre{
	private Integer tailleMinimum;
	private Integer tailleMaximum;
	private String regexpFileName;
	private String regexpNomFichier;
	private Boolean nomFichierFacultatif;
	private Long id;
	private String messageAide;
	
	public void setMessageAide(String messageAide) {
		this.messageAide = messageAide;
	}
	
	public String getRegexpFileName() {
		return regexpFileName;
	}

	public void setRegexpFileName(String regexpFileName) {
		this.regexpFileName = regexpFileName;
	}

	public Boolean getNomFichierFacultatif() {
		return nomFichierFacultatif;
	}

	public void setNomFichierFacultatif(Boolean nomFichierFacultatif) {
		this.nomFichierFacultatif = nomFichierFacultatif;
	}

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Integer getTailleMaximum() {
		return tailleMaximum;
	}
	public void setTailleMaximum(Integer tailleMaximum) {
		this.tailleMaximum = tailleMaximum;
	}
	public Integer getTailleMinimum() {
		return tailleMinimum;
	}
	public void setTailleMinimum(Integer tailleMinimum) {
		this.tailleMinimum = tailleMinimum;
	}
	public boolean Check(Valeur valeur) {
		//vérifie si le nom de fichier est facultatif
		//s'il l'est, le nom fichier est soit nul, soit il doit se conformer à l'expression régulière
		ValeurFichier valeurFichier = (ValeurFichier)valeur;
		if(		valeurFichier.getNomFichier() == null ||
				valeurFichier.getNomFichier().trim().equals("") &&
				getNomFichierFacultatif().booleanValue() == false)
			return false;
		
		//vérifie le nom de fichier logique
		if(!valeurFichier.getNomFichier().matches(getRegexpNomFichier()))
			return false;
		
		//vérifie la taille du fichier
		if(valeurFichier.getFichier().length > getTailleMaximum().intValue() || 
			valeurFichier.getFichier().length < getTailleMinimum().intValue())
			return false;
		
		//vérifie le nom du fichier physique
		if(!valeurFichier.getNomFichier().matches(getRegexpFileName()))
				return false;
		
		return true;
		
	}

	public String getMessageAide() {
		return messageAide;
	}

	public String getRegexpNomFichier() {
		return regexpNomFichier;
	}

	public void setRegexpNomFichier(String regexpNomFichier) {
		this.regexpNomFichier = regexpNomFichier;
	}

	
	
	

}
